#include "event_loop.h"
#include <stdio.h>


namespace rr {
namespace nio {

EventLoop::EventLoop()
{
    io_ctx_ = std::make_shared<boost::asio::io_context>();
    work_ = std::unique_ptr<Work>(new Work(io_ctx_->get_executor()));
}

EventLoop::~EventLoop()
{

}

int32_t EventLoop::Loop()
{
    io_ctx_->run();
    printf("EventLoop::Loop() run end this[%p]\n", this);
    return 0;
}

void EventLoop::Quit()
{
    printf("EventLoop::Quit() begin this[%p]\n", this);
    io_ctx_->stop();
    printf("EventLoop::Quit() end this[%p]\n", this);
}

void EventLoop::RunInLoop(const PendingCallback& cb)
{
    boost::asio::post(*(io_ctx_.get()), cb);
}


} //namespace 
} //namespace 
